<?php
namespace app\index\model;

use think\Model;

class User extends Model
{

    // //设置完整的数据表(包含前缀)
    // protected $table = 'think_user';

    // //设置数据表(不含前缀)
    // protected $name = 'member';

    // //设置单独的数据库连接
    // protected $connection = [
    //     'type'      => 'mysql',
    //     'hostname'  => '127.0.0.1',
    //     'database'  => 'test',
    //     'username'  => 'root',
    //     'password'  => 'gcy888999',
    //     'hostport'  => '3066',
    //     'params'    => [],
    //     'charset'   => 'utf-8',
    //     'prefix'    => 'think_',
    //     'debug'     => true,
    // ];

    //读取器

    // protected function getBirthdayAttr($birthday)
    // {
    //     return date('Y-m-d', $birthday);
    // }

    // protected function getUserBirthdayAttr($value, $data)
    // {
    //     return date('Y-m-d', $data["birthday"]);
    // }

    // //修改器
    // protected function setBirthdayAttr($value)
    // {
    //     return strtotime($value);
    // }

    //类型转换自动完成
    //对于 timestamp 和 datetime 类型，如果不设置模型的 dateFormat 属性，默认的日期显示格式为：
    //Y-m-d H:i:s ，或者也可以显示的设置日期格式
    // protected $dateFormat = 'Y/m/d';

    //定义类型转换
    // protected $type = [
    //     //设置 birthday 为时间戳类型

    //     //'birthday' => 'timestamp',
    //     'birthday' => 'timestamp:Y/m/d',
    // ];

    //指定自动写入时间戳的类型为dateTime类型
    // protected $autoWriteTimestamp = 'datetime';

    // //自动时间戳

    // //定义自动化完成的属性
    // protected $insert = ['status' => 1];

    // //定义自动完成的属性
    // // protected $insert = ['status'];

    // //status 属性修改器
    // protected function setStatusAttr($value, $data)
    // {
    //     return '流年' == $data['nickname'] ? 1 : 2;
    // }

    // //status 属性读取器
    // protected function getStatusAttr($value)
    // {
    //     $status = [-1 => '删除', 0 => '禁用', 1 => '正常', 2 => '待审核'];
    //     return $status[$value];
    // }

    // //email查询
    // protected function scopeEmail($query, $email = '')
    // {
    //     $query->where('email', 'thinkphp@qq.com');
    // }

    // //status 查询
    // protected function scopeStatus($query)
    // {
    //     $query->where('status', 1);
    // }

    // //全局查询范围  base 方法，thinkPHP内置
    // protected static function base($query)
    // {
    //     //查询状态为1的数据
    //     $query->where('status', 1);
    // }

//数据库关联教程

    //设置完整的数据表(包含前缀)
    protected $table = 'think_user';

    //开启自动写入时间戳
    protected $autoWriteTimestamp = true;

    //修改器
    protected function setBirthdayAttr($value)
    {
        return strtotime($value);
    }

    // 定义自动完成的属性
    protected $insert = ['status' => 1];

    //定义一对一关联方法
    public function profile()
    {
        //HAS ONE 档案关联
        return $this->hasOne('Profile');
    }

    //hasOne('关联模型名','关联外键','主键','别名定义','join类型')

    //定义一对多关联
    //hasMany('关联模型名','关联外键','关联模型主键','别名定义')
    public function books()
    {
        return $this->hasMany('Book');
    }

    //定义多对多关联
    //belongsToMany('关联模型名','中间表名称','关联外键','关联模型主键','别名定义')
    public function roles()
    {
        //用户BELONG_TO_MANY 角色
        return $this->belongsToMany('Role', 'think_access');
    }

    //模型
    //status修改器
    protected function getUserStatusAttr($value)
    {
        $status = [-1 => '删除', 0 => '禁用', 1 => '正常'];
        return $status[$value];
    }

}
